vlwkaos' digital garden

Bamboo 빌드 자동화

CI/CD bamboo

뱀부는 현재 구시대적 산물이다. 설치형 소프트웨어로 서버에 설치하여 따로 관리해주어야함. 요즘은 bitbucket pipeline이라는 cloud 서비스를 사용한다.

우선 빌드와 배포의 차이를 알아야한다.

빌드란?

artifact를 뱉는 것은 모두 빌드이다.

Bamboo의 역할은 agent에 작업을 할당하는 것이다. 직접 작업을 수행하지는 않는다. 빌드 요청을 받으면 논리적으로 구분된 agent중에 적합한 놈에다가 작업을 넘긴다.

빌드 설정에 조건과 작업을 지정해 두면 조건을 만족하는 agent가 설치된 PC에 작업을 할당한다. 이것이 필요한 이유는 어느 agent에 작업을 할당해야 할 지 모르기 때문에 일종의 필터를 걸어주는 것이다.

예를 들어 작업은 OS specific할 수 있다. shell, bash, powershell처럼 터미널 스펙이 다를 수도 있기 때문에 거기에 맞는 작업을 올바른 agent에게 넘겨주도록 설정하는 것이다.

주로 git clone 으로 저장소의 소스를 받아온 뒤 npm install 하여 dependency를 설치하고 npm run build로 빌드를 만든다. 만들어진 빌드 파일들을 이것저것 처리하여 조립하고 zip으로 묶어서 배포한다.

실제로 agent가 있는 서버에 접속을 해보면 폴더로 agent가 논리적 구분이 되어있고 해당 빌드의 key값과 같은 폴더가 agent폴더 안에 작업을 위한 폴더로 만들어져 있다. 그 안에 artifact가 뱉어져있다.

배포

bamboo에서 plan은 build를 지정해야한다. 빌드가 뱉은 artifact를 AWS로 보낸다. 보낸 파일을 배포하는 스크립트를 쏜다.

dryrun 커맨드는 뒤에 올 커맨드를 날려서 어떤 일이 벌어질 지는 알려주지만 실제로 실행은 안하는 커맨드이다.

요즘은 bamboo 거의 안쓴다. [[Docker]] / kubernetes 가 대세다.

Referred in

Bamboo 빌드 자동화